//  Copyright (c) 2010, Keith Nixon, Sales Engineering, Salesforce.com Inc.
//  All rights reserved.
//
//  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
//  Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 
//  Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
//  Neither the name of the salesforce.com nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. 
//  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
//  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
//  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
//  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
//  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
//  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 
//  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
//  *NB - This is NOT a bulkified trigger
//
//  History
//
//  Version  Date            Author          Comments
//  1.0      05-11-2010      Keith Nixon     Initial version
//

trigger DeleteOutletObjectives on Outlet_Definition_Objective__c (before delete) {
    
    //1. Each Outlet Definition Objective record has an Objective Id.
    //   We take the Objective__c id and query for all the Outlet Objective
    //   records that have this id.
    
    Outlet_Definition_Objective__c outletDefObj = Trigger.old.get(0);
    Id objectiveId = outletDefObj.Objective__c;
    
    //2. We query for the outlet objectives that have the same objective id
    //   and have an account that looks up to the current outlet definition of
    //   this outlet definition record that is about to be deleted.
    
    if(objectiveId != null)
    {
        List<Outlet_Objectives__c> doomedOutletObjectives = [
            Select Id From Outlet_Objectives__c where Objective__c =: objectiveId 
                AND Account__c IN (Select Id From Account Where Outlet_Definition__c =: outletDefObj.Outlet_definition__c)
        ];
        
        //2. Delete the outlet objective records.
        if(!doomedOutletObjectives.isEmpty())
        {
            delete doomedOutletObjectives;
        }
    }
}